package com.aiapphub.SystemCode.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.aiapphub.BaseCode.handler.mybatisPlus.BigDecimalEncryptTypeHandler;
import com.aiapphub.BaseCode.handler.mybatisPlus.StringEncryptTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.baomidou.mybatisplus.annotation.TableName;
import org.apache.ibatis.type.JdbcType;

import java.math.BigDecimal;

/**
 * 工资明细表(SalaryStatement)表实体类
 *
 * @author makejava
 * @since 2025-04-19 17:16:23
 */
@SuppressWarnings("serial")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "salary_statement",autoResultMap = true)
public class SalaryStatement  {


    @TableId(type = IdType.AUTO)
    private Long id;

    //账期
    private String accountPeriod;
    //工号
    private String jobNumber;

    //部门
    private String department;
    //姓名
    private String name;
    //职务（职级）
    @TableField(typeHandler = StringEncryptTypeHandler.class)
    private String positionRank;
    //级别-档次
    @TableField(typeHandler = StringEncryptTypeHandler.class)
    private String gradeLevel;
    //职务（职级）工资
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal positionSalary;
    //级别工资
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal gradeSalary;
    //生活性补贴
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal livingAllowance;
    //工作性津贴
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal workAllowance;
    //信访岗位津贴
    private Double petitionAllowance;
    //公务交通补贴
    private Double trafficSubsidy;
    //通讯补贴
    private Double communicationSubsidy;
    //物业补贴
    private Double propertySubsidy;
    //基础绩效奖
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal basicPerformance;
    //其他
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal otherIncome;
    //补发工资
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal backPay;
    //年终一次性奖金
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal annualBonus;
    //应发合计
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal  totalIncome;
    //养老保险
    private Double pensionInsurance;
    //医疗保险
    private Double medicalInsurance;
    //住房公积金
    private Double housingFund;
    //工会费
    private Double unionFee;
    //药费
    private Double medicalFee;
    //房租
    private Double rent;
    //扣工资
    private Double salaryDeduction;
    //累计子女教育
    private Double childEducation;
    //累计住房贷款利息
    private Double housingLoan;
    //累计住房租金
    private Double housingRent;
    //累计赡养老人
    private Double elderlySupport;
    //累计婴幼儿照护
    private Double infantCare;
    //累计继续教育
    private Double continuingEdu;
    //个税专项附加扣除额度
    private Double taxDeduction;
    //所得税
    private Double incomeTax;
    //扣款
    private Double totalDeduction;
    //补扣养老保险
    private Double backPension;
    //补扣公积金
    private Double backHousingFund;
    //补扣医保
    private Double backMedical;
    //应扣合计
    private Double totalDeductions;
    //实发工资
    @TableField(typeHandler = BigDecimalEncryptTypeHandler.class, jdbcType = JdbcType.VARCHAR)
    private BigDecimal netSalary;
    //备注
    private String remark;
    //状态（0:已发布, 1:待审核）
    private Integer status;

}
